const express = require("express")
const multer = require("multer")

var webServer = {}

webServer.express = express()

/// json解析中间件
webServer.express.use(express.json())

/// 上传中间件 以下写法所有接口都可以上传
const update = multer({ dest: "./public/upload/temp" })
webServer.express.use(update.any())

//指定静态资源路径
webServer.express.use(express.static('public'));

// 开放跨域请求
webServer.express.use((req, res, next) => {
    // 设置允许跨域的域名，*代表允许任意域名跨域
    res.header("Access-Control-Allow-Origin", "*");
    //允许的header类型
    res.header("Access-Control-Allow-Headers", "*");
    //跨域允许的请求方式
    res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
    if (req.method == "OPTIONS") res.sendStatus(200); //让options尝试请求快速结束
    else next();
})

// 自定义错误处理中间件
webServer.express.use((err, req, res, next) => {
    if (err.code === '404') {
        // 如果请求的路由不存在，返回404错误响应
        res.status(404).json({
            success: false,
            message: '接口不存在 api not fount',
            data: '',
            time: Date.now()
        })
    } else {
        // 如果是其他错误，将错误传递给下一个中间件或处理程序
        next(err);
    }
})

webServer.express.use("/user", require("../routers/user_router"))
webServer.express.use("/file", require("../routers/file_router"))
webServer.express.use("/game", require("../routers/game_router"))
webServer.express.use("/socket", require("../routers/ws_router"))

webServer.express.get("/", (req, res) => {
    res.send("hello world");
})

webServer.express.listen(global.httpPort, () => {
    console.log(`启动成功 : http://localhost:${global.httpPort}/`)
    console.log(`启动成功 : http://${global.localIP}:${global.httpPort}/`)
})

module.exports = webServer